package com.bjc.service.impl;

import com.bjc.po.Article;
import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * @program: boot-jedis
 * @description: 显示最新的5篇文章
 * @author: bjc
 * @create: 2020-07-14 22:17
 */
@Service
@Log
public class ListCacheServiceImpl {

    @Autowired
    private RedisTemplate<String,Object> redisTemplate;

    @Resource(name = "redisTemplate")
    private ListOperations<String, Article> opsForList;

    /**
     * list案例
     * 需求分析：显示当前最新的5条文章信息
     * 1.初始化 存5个文章信息
     * 2.查询主页显示5个文章
     * 3.添加文章
     * 4.删除文章
     */
    public void initArticle(){
        String key = "article:top5";
        //1.在mysql中查询5个文章
        LocalDateTime now = LocalDateTime.now();//当前时间
        String dateTime = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
        log.info("模拟mysql查询 文章信息");
        List<Article> list = new ArrayList<>();
        for (int i=1;i<6;i++){
            Article ar = new Article();
            ar.setId("1000"+i);
            ar.setTitle("文章标题"+i);
            ar.setContent("文章内同数据"+i);
            ar.setClickNum(new Random().nextInt(1000)+1);
            ar.setAuthor("陈梦");
            ar.setCreateDate(dateTime);
            list.add(ar);
        }
        log.info("--->存入Redis指定key中---->");
        opsForList.rightPushAll(key,list);
    }

    /**
     * 2 查询首页文章信息（5条）
     */
    public List<Article> selectArticleTop5(){
        String key = "article:top5";
        log.info("--->查询首页文章信息（5条）--->");
        return opsForList.range(key,0,4);
    }

    /**
     * 3 添加文章
     */
    public long insertArticle(Article ar){
        //log.info("------------->数据库mysql进行添加----------->");
        log.info("------------->Redis中也要进行添加成功----------->");
        String key = "article:top5";
        return opsForList.leftPush(key,ar);
    }

    /**
     * 删除
     */

    /**
     * 当用户完成付款后
     * 淘宝会生成一个物流队列 购买的商品 所在地--》收货地址
     * 生成物流队列 （北京海淀某小区、收货地址：南京建邺千锋教育JAVA 二楼1904班级）
     * 1.商家发货（北京海淀某小区）
     * 2.快递小哥取货
     * 3.北京首都机场--》南京禄口机场
     * 4.南京禄口机场--》浦口
     * 5.浦口区--》北外滩水城
     * 6.收货
     * 商品评价
     */

    /**
     *1.生成订单  物流队列
     */
    public void orderQueue(String orderId){
        String key = "queue"+orderId;
        //opsForList.leftPush()
    }
}
